home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Kompresni & kodovaci programy / ucl-0.91 / acconfig / m4 / ccansi.m4 < prev    next >
Text File  |  1999-05-26  |  3KB  |  116 lines

  1. ## ---------------------------------------------------------- ##
  2. ## ANSIfy the C compiler and preprocessor whenever possible.  ##
  3. ## From Franc,ois Pinard and Markus Oberhumer.                ##
  4. ## ---------------------------------------------------------- ##
  5.  
  6. # serial 2
  7.  
  8. # @defmac mfx_PROG_CC_ANSI
  9. # @maindex PROG_CC_ANSI
  10. # @ovindex CC
  11. # If the C compiler in not in ANSI C mode by default, try to add an option
  12. # to output variable @code{CC} to make it so.  This macro tries various
  13. # options that select ANSI C on some system or another.  It considers the
  14. # compiler to be in ANSI C mode if it handles function prototypes correctly.
  15. #
  16. # If you use this macro, you should check after calling it whether the C
  17. # compiler has been set to accept ANSI C; if not, the shell variable
  18. # @code{mfx_cv_prog_cc_ansi} is set to @samp{no}.  If you wrote your source
  19. # code in ANSI C, you can make an un-ANSIfied copy of it by using the
  20. # program @code{ansi2knr}, which comes with Ghostscript.
  21. # @end defmac
  22.  
  23. AC_DEFUN(mfx_PROG_CC_ANSI,
  24. [AC_REQUIRE([AC_PROG_CC])
  25. AC_BEFORE([$0], [AC_C_INLINE])
  26. AC_BEFORE([$0], [AC_C_CONST])
  27. dnl Force this before AC_PROG_CPP.  Some cpp's, eg on HPUX, require
  28. dnl a magic option to avoid problems with ANSI preprocessor commands
  29. dnl like #elif.
  30. AC_BEFORE([$0], [AC_PROG_CPP])
  31. AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
  32. AC_CACHE_VAL(mfx_cv_prog_cc_ansi,
  33. [mfx_cv_prog_cc_ansi=no
  34. ac_save_CC="$CC"
  35. # Don't try gcc -ansi; that turns off useful extensions and
  36. # breaks some systems' header files.
  37. # AIX                   -qlanglvl=ansi
  38. # Ultrix and OSF/1      -std1
  39. # HP-UX 10.20 and later -Ae
  40. # HP-UX older versions  -Aa -D_HPUX_SOURCE
  41. # SVR4                  -Xc -D__EXTENSIONS__
  42. for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
  43. do
  44.   CC="$ac_save_CC $ac_arg"
  45.   AC_TRY_COMPILE(
  46. [#include <stdarg.h>
  47. #include <stdio.h>
  48. #include <sys/types.h>
  49. #include <sys/stat.h>
  50. # include <limits.h>  /* note the space */
  51. #if 1 && !defined(UINT_MAX)
  52. #  error "this is an error"
  53. #  include "choke me"
  54. #elif 0 || !defined(UINT_MAX)
  55. #  error "this is an error"
  56. #  include "choke me"
  57. #elif !defined(UINT_MAX)
  58. #  error "this is an error"
  59. #  include "choke me"
  60. #elif !(1-1)
  61. /* ok */
  62. #else
  63. #  error "this is an error"
  64. #  include "choke me"
  65. #endif
  66. #define STRINGIZE(x)        #x
  67. #define MACRO_EXPAND(x)     STRINGIZE(x)
  68. extern volatile signed char flag;
  69. extern char *s ( void );
  70. char *s ( void )
  71. {
  72.   static char n[] = MACRO_EXPAND(UINT_MAX);
  73.   return flag ? n : n + 1;
  74. }
  75. /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
  76. struct buf { int x; };
  77. FILE * (*rcsopen) (struct buf *, struct stat *, int);
  78. static char *e (p, i)
  79.      char **p;
  80.      int i;
  81. {
  82.   return p[i];
  83. }
  84. static char *f (char * (*g) (char **, int), char **p, ...)
  85. {
  86.   char *s;
  87.   va_list v;
  88.   va_start (v,p);
  89.   s = g (p, va_arg (v,int));
  90.   va_end (v);
  91.   return s;
  92. }
  93. int test (int i, double x);
  94. struct s1 {int (*f) (int a);};
  95. struct s2 {int (*f) (double a);};
  96. int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
  97. int argc;
  98. char **argv;
  99. ], [
  100. return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
  101. ],
  102. [mfx_cv_prog_cc_ansi="$ac_arg"; break])
  103. done
  104. CC="$ac_save_CC"
  105. ])
  106. if test -z "$mfx_cv_prog_cc_ansi"; then
  107.   AC_MSG_RESULT([none needed])
  108. else
  109.   AC_MSG_RESULT($mfx_cv_prog_cc_ansi)
  110. fi
  111. case "x$mfx_cv_prog_cc_ansi" in
  112.   x|xno) ;;
  113.   *) CC="$CC $mfx_cv_prog_cc_ansi" ;;
  114. esac
  115. ])
  116.